缓存雪崩
1.1 定义
同一时间段内,多数Key集体过期甚至Redis直接宕机,这些请求都落到了MySQL上,这种情况足以压垮后端系统
1.2 解决方法
- 随机TTL:设置Key的期限时加上一个随机值,防止其集体失效。
- 利用Redis集群提高服务高可用性
- 熔断(降级)限流:降级,如服务器崩了,快速失败,不要把错误下放到数据库层。
- 多级缓存:增加本地缓存,如Guava/Caffeine,多级缓存,如 浏览器缓存 -> nginx缓存 -> Redis缓存 -> JVM本地缓存 -> 数据库,有可操作空间,但是根据CAP理论,可用性高了,一致性就不好处理了
- 预热:在上线并发压力大的业务时,提前将热点数据加载到缓存中,避免用户访问过多冷数据,请求直接打到数据库中